# -*- coding: utf-8 -*-

from odoo import models, fields, api


class ProductTemplate(models.Model):
    _inherit = 'product.template'
    
    # CPQ扩展字段
    is_configurable = fields.Boolean(
        string='可配置产品',
        default=False,
        help='是否是可配置的CPQ产品'
    )
    
    configuration_template_id = fields.Many2one(
        'cpq.configuration',
        string='配置模板',
        help='该产品的标准配置模板'
    )
    
    # PLM集成字段
    plm_part_number = fields.Char(
        string='PLM零件号',
        help='产品生命周期管理系统中的零件编号'
    )
    
    plm_version = fields.Char(
        string='PLM版本',
        help='PLM系统中的版本号'
    )
    
    plm_last_sync = fields.Datetime(
        string='最后同步时间',
        readonly=True
    )
    
    # 成本相关
    latest_quoted_cost = fields.Monetary(
        string='最新报价成本',
        currency_field='currency_id',
        help='最近一次报价的成本价格'
    )
    
    cost_update_date = fields.Date(
        string='成本更新日期'
    )
    
    # 汽车零部件特有属性
    vehicle_model = fields.Char(
        string='适用车型',
        help='例如: 奔驰E级W214'
    )
    
    part_category = fields.Selection([
        ('bumper', '保险杠'),
        ('fender', '翼子板'),
        ('door_panel', '门板'),
        ('dashboard', '仪表台'),
        ('grille', '格栅'),
        ('other', '其他')
    ], string='零件类型')
    
    # 材料类型
    material_type = fields.Selection([
        ('pp', 'PP增强'),
        ('ppe', 'PPE工程塑料'),
        ('pc_abs', 'PC+ABS'),
        ('abs', 'ABS'),
        ('nylon', '尼龙PA'),
        ('other', '其他')
    ], string='材料类型')
    
    # 表面处理
    surface_finish = fields.Selection([
        ('plain', '素色'),
        ('texture', '纹理'),
        ('metallic', '金属漆'),
        ('pearl', '珠光漆'),
        ('chrome', '镀铬'),
        ('carbon_fiber', '碳纤维')
    ], string='表面处理')
    
    # 工艺参数
    cycle_time = fields.Float(
        string='成型周期(秒)',
        help='注塑成型的标准周期时间'
    )
    
    mold_cavities = fields.Integer(
        string='模穴数',
        default=1,
        help='一模几穴'
    )
    
    # 质量参数
    weight = fields.Float(
        string='单件重量(kg)',
        digits=(16, 3)
    )
    
    # 统计字段
    quotation_count = fields.Integer(
        string='报价数量',
        compute='_compute_quotation_count'
    )
    
    @api.depends('name')
    def _compute_quotation_count(self):
        """计算该产品的报价数量"""
        for product in self:
            product.quotation_count = self.env['cpq.quotation'].search_count([
                ('product_tmpl_id', '=', product.id)
            ])
    
    def action_view_quotations(self):
        """查看该产品的所有报价"""
        self.ensure_one()
        return {
            'type': 'ir.actions.act_window',
            'name': '产品报价',
            'res_model': 'cpq.quotation',
            'view_mode': 'list,form',
            'domain': [('product_tmpl_id', '=', self.id)],
            'context': {'default_product_tmpl_id': self.id}
        }
    
    def action_sync_from_plm(self):
        """从PLM同步工程数据"""
        self.ensure_one()
        # TODO: 实现PLM集成
        # integration = self.env['cpq.integration']
        # plm_data = integration.fetch_engineering_data_from_plm(self.plm_part_number)
        # if plm_data:
        #     self.write({
        #         'plm_version': plm_data['version'],
        #         'plm_last_sync': fields.Datetime.now()
        #     })
        pass

